package 力扣._213_打家劫舍2;

import java.util.Arrays;

public class Solution {
    int tool(int[] nums, int l, int r) {
        if (l == r)
            return nums[l];
        int[] dp = new int[nums.length];
        dp[l] = nums[l];
        dp[l + 1] = Math.max(nums[l], nums[l + 1]);

        for (int i = l + 2; i <= r; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
        }
        System.out.println(Arrays.toString(dp));
        return dp[r];
    }

    public int rob(int[] nums) {
        //dp[i] : 在 起始点 到 i 范围内能抢到的最大值
        //线性数组变为循环数组，不可相邻求最大价值
        //考虑偷第一个，不考虑偷第一个，两种情况
        if (nums.length == 1)
            return nums[0];
        int t1 = tool(nums, 0, nums.length - 2);
        int t2 = tool(nums, 1, nums.length - 1);
        return Math.max(t1, t2);
    }

    public static void main(String[] args) {
        int rob = new Solution().rob(new int[]{200,3,140,20,10});
        System.out.println(rob);
    }
}
